package A2018;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.math.BigInteger;
import java.util.Scanner;

/*
  设i为虚数单位。对于任意正整数n，(2+3i)^n 的实部和虚部都是整数。
求 (2+3i)^123456 等于多少？ 即(2+3i)的123456次幂，这个数字很大，要求精确表示。

答案写成 “实部±虚部i” 的形式，实部和虚部都是整数（不能用科学计数法表示），
中间任何地方都不加空格，实部为正时前面不加正号。(2+3i)^2 写成: -5+12i，
(2+3i)^5 的写成: 122-597i
 */
public class _3_复数幂 {

	public static void main(String[] args) throws FileNotFoundException {
		Scanner in = new Scanner(System.in);
		PrintStream ps = new PrintStream(new FileOutputStream("file.txt"));
		System.setOut(ps);
		BigInteger a = new BigInteger("2"), b = new BigInteger("3"), two = a, zero = new BigInteger("0"), a1 = a,
				b1 = b;
		for (int i = 1; i < 123456; i++) {
			BigInteger temp = a.multiply(a1).subtract(b.multiply(b1));
			b = a.multiply(b1).add(a1.multiply(b));
			a = temp;
		}
		System.out.println(a + (b.compareTo(zero) > 0 ? "+" : "") + b+"i");
	}
}
